package org.lanqiao.tjut.test;

import java.io.InputStream;

import org.apache.ibatis.logging.LogFactory;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import org.lanqiao.tjut.db.DBDriver;
import org.lanqiao.tjut.mapping.UsersEntityMapper;
import org.lanqiao.tjut.orm.UsersEntity;

public class MybatisTestDriver {
	@Test
	public void testMybatis_select_01() {
		// 1 获取Mybatis的属性配置文件信息
		InputStream is = MybatisTestDriver.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
		// 2 获取sqlsessionFactory对象
		SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
		// 3 获取sqlsession对象，进行数据库操作
		SqlSession session = sessionFactory.openSession();
		// 4 打开sqlsession对象，调用映射配置中的sql语句进行数据操作
		UsersEntity suerE = session.selectOne("org.lanqiao.tjut.mapping.UsersEntityMapper.selectUsersInfo", 2);
		// 5 获取数据库操作结果集，并进行遍历显示
		System.out.println("查询结果：" + suerE.toString());
		// 6 关闭session对象，回收资源
		session.close();
	}

	@Test
	public void testMybatis_select_02() {
		// 1 获取Mybatis的属性配置文件信息
		// InputStream is =
		// MybatisTestDriver.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
		// 2 获取sqlsessionFactory对象
		SqlSessionFactory sessionFactory = DBDriver.getNewInstanceSessionFactory();
		// 3 获取sqlsession对象，进行数据库操作
		SqlSession session = sessionFactory.openSession();
		// 4 打开sqlsession对象，调用映射配置中的sql语句进行数据操作
		UsersEntity userE0 = new UsersEntity();
		userE0.setUserid(2);
		UsersEntity suerE = session.selectOne("org.lanqiao.tjut.mapping.UsersEntityMapper.selectUsersInfo", userE0);
		// 5 获取数据库操作结果集，并进行遍历显示
		// LogFactory.useCommonsLogging();
		System.out.println("查询结果：" + suerE.toString());
		// 6 关闭session对象，回收资源
		session.close();

	}

	@Test
	public void testMybatis_select_03() {
		// 1 获取Mybatis的属性配置文件信息
		InputStream is = MybatisTestDriver.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
		// 2 获取sqlsessionFactory对象
		SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
		// 3 获取sqlsession对象，进行数据库操作
		SqlSession session = sessionFactory.openSession();
		// 4 打开sqlsession对象，调用映射配置中的sql语句进行数据操作
		UsersEntity suerE = session.selectOne("org.lanqiao.tjut.mapping.UsersEntityMapper.selectUsersInfo2", 2);
		// 5 获取数据库操作结果集，并进行遍历显示
		System.out.println("查询结果：" + suerE.toString());
		// 6 关闭session对象，回收资源
		session.close();
	}

	@Test
	public void testMybatis_select_04() {
		// 1 获取Mybatis的属性配置文件信息
		InputStream is = MybatisTestDriver.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
		// 2 获取sqlsessionFactory对象
		SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
		// 3 获取sqlsession对象，进行数据库操作
		SqlSession session = sessionFactory.openSession();
		// 4 打开mapper映射接口对象，调用映射配置中的sql语句进行数据操作
		UsersEntityMapper usersM = session.getMapper(UsersEntityMapper.class);
		// UsersEntity suerE = session.selectOne(
		// "org.lanqiao.tjut.mapping.UsersEntityMapper.selectUsersInfo2", 2);
		UsersEntity suerE = usersM.selectUsersInfo(2);
		// 5 获取数据库操作结果集，并进行遍历显示
		System.out.println("查询结果：" + suerE.toString());
		// 6 关闭session对象，回收资源
		session.close();
	}

	@Test
	public void testMybatis_insert_01() {
		// 1 获取Mybatis的属性配置文件信息
		// 2 获取sqlsessionFactory对象
		SqlSessionFactory sessionFactory = DBDriver.getNewInstanceSessionFactory();
		// 打开的session默认是事务开启状态
		// 3 获取sqlsession对象，进行数据库操作
		SqlSession session = sessionFactory.openSession();
		// 4 打开sqlsession对象，调用映射配置中的sql语句进行数据操作
		// 创建一个新的是实体对象数据
		UsersEntity userP = new UsersEntity();
		userP.setUsername("xiaoming");
		userP.setUserage(20);
		userP.setUseraddress("天津和平");
		int i = session.insert("org.lanqiao.tjut.mapping.UsersEntityMapper.saveUsersInfo", userP);
		// 5 获取数据库操作结果集，并进行遍历显示
		System.out.println("新增结果：" + i);
		// 提交事务
		session.commit();
		LogFactory.useCommonsLogging();
		// 6 关闭session对象，回收资源
		session.close();
	}
}
